home *** CD-ROM | disk | FTP | other *** search
Wrap
using System; using System.Collections; using System.Collections.Specialized; using System.Data.Common; using GBPVR.Public; using gbweb; namespace GBPVRSchedule { /// <summary> /// Summary description for Schedule. /// </summary> public abstract class Schedule { public abstract IList LoadRecordingSchedule(); public abstract IList GetListingsForTimePeriod(DateTime startTime, DateTime endTime); public abstract Channel GetChannelByOID(int oid); public abstract Programme GetProgrammeByOID(int oid); public abstract ScheduledRecording GetScheduledRecordingByOID(int oid); public abstract void CancelScheduledRecording(ScheduledRecording scheduledRecording); public abstract void UpdateScheduledRecording(ScheduledRecording scheduledRecording); public abstract void CreateReminder(Programme programme); public abstract void RemoveReminder(Programme programme); public abstract ArrayList GetReminderList(); public enum DayType { SheduleThisDay = 0, SheduleAnyDay = 1, SheduleSpecificDays = 2 } public enum Quality { High = GBPVR.Public.ScheduledRecording.QUALITY_HIGH, Medium = GBPVR.Public.ScheduledRecording.QUALITY_MEDIUM, Low = GBPVR.Public.ScheduledRecording.QUALITY_LOW, Custom1 = GBPVR.Public.ScheduledRecording.QUALITY_CUSTOM1, Custom2 = GBPVR.Public.ScheduledRecording.QUALITY_CUSTOM2, LiveTV = GBPVR.Public.ScheduledRecording.QUALITY_LIVETV } public enum RecType { Daily = GBPVR.Public.ScheduledRecording.TYPE_RECORD_DAILY, Once = GBPVR.Public.ScheduledRecording.TYPE_RECORD_ONCE, Season = GBPVR.Public.ScheduledRecording.TYPE_RECORD_SEASON, WeekDays = GBPVR.Public.ScheduledRecording.TYPE_RECORD_WEEK_DAYS, WeekEnds = GBPVR.Public.ScheduledRecording.TYPE_RECORD_WEEKEND_DAYS, Weekly = GBPVR.Public.ScheduledRecording.TYPE_RECORD_WEEKLY } public enum Status { Completed = GBPVR.Public.ScheduledRecording.STATUS_COMPLETED, Completed_Error = GBPVR.Public.ScheduledRecording.STATUS_COMPLETED_WITH_ERROR, Conflict = GBPVR.Public.ScheduledRecording.STATUS_CONFLICT, Deleted = GBPVR.Public.ScheduledRecording.STATUS_DELETED, InProgress = GBPVR.Public.ScheduledRecording.STATUS_IN_PROGRESS, PlaceHolder = GBPVR.Public.ScheduledRecording.STATUS_PLACE_HOLDER, Pending = GBPVR.Public.ScheduledRecording.STATUS_PENDING } [Flags] public enum Day { Sunday = GBPVR.Public.ReoccuringRecordingExtras.DAY_SUNDAY, Monday = GBPVR.Public.ReoccuringRecordingExtras.DAY_MONDAY, Tuesday = GBPVR.Public.ReoccuringRecordingExtras.DAY_TUESDAY, Wednesday = GBPVR.Public.ReoccuringRecordingExtras.DAY_WEDNESDAY, Thursday = GBPVR.Public.ReoccuringRecordingExtras.DAY_THURSDAY, Friday = GBPVR.Public.ReoccuringRecordingExtras.DAY_FRIDAY, Saturday = GBPVR.Public.ReoccuringRecordingExtras.DAY_SATURDAY } public const int Keep_All_Recordings = GBPVR.Public.ReoccuringRecordingExtras.KEEP_ALL_FILES; public abstract bool ScheduleOnce(Programme programme, int PrePad, int PostPad); public abstract bool ScheduleOnce(Programme programme, Quality quality, int PrePad, int PostPad); public abstract bool ScheduleAnyTime(Programme programme, RecType type, int PrePad, int PostPad); public abstract bool ScheduleAnyTime(Programme programme, Quality quality, RecType type, int PrePad, int PostPad); public abstract bool ScheduleAnyTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, RecType type, int PrePad, int PostPad); public abstract bool ScheduleAnyTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, ArrayList days, RecType type, int PrePad, int PostPad); public abstract bool ScheduleThisTime(Programme programme, RecType type, int PrePad, int PostPad); public abstract bool ScheduleThisTime(Programme programme, Quality quality, RecType rec, int PrePad, int PostPad); public abstract bool ScheduleThisTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, RecType type, int PrePad, int PostPad); public abstract bool ScheduleThisTime(Programme programme, Quality quality, DayType dayType, int keepnumRecordings, ArrayList days, RecType type, int PrePad, int PostPad); public IDictionary LoadKnownRecordings() { // build up a list of the recording we already know about IList scheduledRecordings = LoadRecordingSchedule(); IDictionary knownRecordings = new HybridDictionary(); foreach (ScheduledRecording scheduledRecording in scheduledRecordings) { if (scheduledRecording.getRecordingStatus() == ScheduledRecording.STATUS_DELETED) continue; if (scheduledRecording.getProgramme() != null) { knownRecordings[scheduledRecording.getProgramme().getOID()] = scheduledRecording; } } return knownRecordings; } public int getSeasonDayMask(ScheduledRecording scheduledRecording) { int day_mask = -1; if ((RecType)scheduledRecording.getRecordingType() == RecType.Season) { // create the database connection DbConnection aConnection = Global.GetOpenGBPVRDbConnection(); // create the command object and store the sql query DbCommand aCommand = aConnection.CreateCommand(); //Create the command sql query string aCommand.CommandText = "select day_mask from REOCCURING_EXTRAS where recording_group='" + scheduledRecording.getRecordingGroup() + "'"; aCommand.Connection = aConnection; DbDataReader aReader = aCommand.ExecuteReader(); if (aReader.Read()) { day_mask = aReader.GetInt16(0); } // close the reader aReader.Close(); aConnection.Close(); aConnection.Dispose(); } return day_mask; } public string getSeasonDayString(ScheduledRecording scheduledRecording) { string days = string.Empty; if ((RecType)scheduledRecording.getRecordingType() == RecType.Season) { int day_mask = getSeasonDayMask(scheduledRecording); if (day_mask != -1) { if ((day_mask & ReoccuringRecordingExtras.DAY_MONDAY) > 0) { days = "Monday"; } if ((day_mask & ReoccuringRecordingExtras.DAY_TUESDAY) > 0) { if (days != string.Empty) { days += ", Tuesday"; } else { days = "Tuesday"; } } if ((day_mask & ReoccuringRecordingExtras.DAY_WEDNESDAY) > 0) { if (days != string.Empty) { days += ", Wednesday"; } else { days = "Wednesday"; } } if ((day_mask & ReoccuringRecordingExtras.DAY_THURSDAY) > 0) { if (days != string.Empty) { days += ", Thursday"; } else { days = "Thursday"; } } if ((day_mask & ReoccuringRecordingExtras.DAY_FRIDAY) > 0) { if (days != string.Empty) { days += ", Friday"; } else { days = "Friday"; } } if ((day_mask & ReoccuringRecordingExtras.DAY_SATURDAY) > 0) { if (days != string.Empty) { days += ", Saturday"; } else { days = "Saturday"; } } if ((day_mask & ReoccuringRecordingExtras.DAY_SUNDAY) > 0) { if (days != string.Empty) { days += ", Sunday"; } else { days = "Sunday"; } } } } return days; } } }